// import { defineStore } from 'pinia'
// import { ref, computed } from 'vue'
// // import { Map } from '@mapgis/webclient-js-api'

// export const useMapStore = defineStore('map', () => {
//   // 核心状态
//   const mapInstance = ref(null)
//   const layers = ref([])          // 新增：图层管理
//   const currentTool = ref(null)   // 新增：当前激活工具
//   const mapStyles = ref({         // 新增：样式配置
//     default: {
//       strokeColor: '#4a90e2',
//       strokeWidth: 2
//     }
//     // state: () => ({
//     //   mapInstance: null,
//     //   layers: {}
//     // }),

//     // actions: {
//     //   // 初始化地图
//     //   async initMap(containerId, config) {
//     //     this.mapInstance = new Map(containerId, config)
//     //   },

//     //   // 添加图层
//     //   async addLayer(config) {
//     //     const layer = await this.mapInstance.addLayer(config)
//     //     this.layers[config.name] = layer
//     //     return layer
//     //   },

//     //   // 获取图层
//     //   getLayer(name) {
//     //     return this.layers[name] || null
//     //   }
//     // }
//   })

//   // --- Getter 计算属性 ---
//   const currentZoom = computed(() => {
//     return mapInstance.value?.getView().getZoom() || 0
//   })

//   const currentCenter = computed(() => {
//     if (!mapInstance.value) return [0, 0]
//     const center = mapInstance.value.getView().getCenter()
//     return window.ol.proj.transform(center, 'EPSG:3857', 'EPSG:4326')
//   })

//   // --- Actions 方法 ---

//   // 基础方法（保持原有）
//   const setMap = (map) => {
//     mapInstance.value = map
//     initDefaultLayers()  // 新增：初始化默认图层
//   }

//   // 增强的导出方法
//   const exportMapImage = (options = {}) => {
//     return new Promise((resolve, reject) => {
//       try {
//         if (!mapInstance.value) {
//           throw new Error('Map not initialized')
//         }

//         const {
//           type = 'image/png',
//           quality = 0.92,
//           hideControls = true
//         } = options

//         const viewport = mapInstance.value.getViewport()
//         const canvas = viewport.querySelector('canvas')
//         const controls = viewport.querySelectorAll('.ol-control')

//         // 临时隐藏控件
//         if (hideControls) {
//           controls.forEach(ctrl => ctrl.style.display = 'none')
//         }

//         canvas.toBlob(blob => {
//           // 恢复控件显示
//           if (hideControls) {
//             controls.forEach(ctrl => ctrl.style.display = '')
//           }

//           blob ? resolve(blob) : reject('Export failed')
//         }, type, quality)
//       } catch (error) {
//         reject(error.message)
//       }
//     })
//   }

//   // --- 新增功能方法 ---

//   // 初始化默认图层
//   const initDefaultLayers = () => {
//     const baseLayer = createLayer('base-layer', {
//       style: mapStyles.value.default
//     })
//     layers.value.push(baseLayer)
//   }

//   // 创建新图层
//   const createLayer = (layerId, config) => {
//     return {
//       id: layerId,
//       visible: true,
//       source: new window.ol.source.Vector(),
//       style: createStyle(config.style),
//       olLayer: new window.ol.layer.Vector({
//         source: this.source,
//         style: this.style
//       })
//     }
//   }

//   // 创建样式
//   const createStyle = (styleConfig) => {
//     return new window.ol.style.Style({
//       stroke: new window.ol.style.Stroke({
//         color: styleConfig.strokeColor,
//         width: styleConfig.strokeWidth
//       })
//     })
//   }

//   // 坐标转换（新增）
//   const transformCoordinates = (coords, fromProj, toProj) => {
//     return window.ol.proj.transform(coords, fromProj, toProj)
//   }

//   return {
//     // 状态
//     mapInstance,
//     layers,
//     currentTool,
//     mapStyles,

//     // Getter
//     currentZoom,
//     currentCenter,

//     // 方法
//     setMap,
//     exportMapImage,
//     createLayer,
//     transformCoordinates
//   }
// })
import { defineStore } from 'pinia'
import { ref } from 'vue'

export const useMapStore = defineStore('map', () => {
  const mapInstance = ref(null)
  const isInitialized = ref(false)

  // 安全访问方法
  const getMap = () => {
    if (!mapInstance.value) {
      throw new Error('请先加载地图组件')
    }
    return mapInstance.value
  }
  
  return {
    mapInstance,
    isInitialized,
    setMap: (map) => {
      mapInstance.value = map
      isInitialized.value = true
    },
    getMap
  }
})
